package cn.wolfcode.trip.app.controller;


import cn.wolfcode.trip.app.utils.UserContext;
import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.service.IUserService;
import cn.wolfcode.trip.base.utils.JSONResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/sessions")

    public class SessionController {
    @Autowired
    private IUserService userService;

    /*
    * 登录操作:
    * 请求资源:sessions----users资源重复,不适合
    * 请求方式:post登录相当于在session中增加一个对象
    * 请求参数:email,password
    * 返回值:json对象
    * */
    @PostMapping

    @ResponseBody
    public Object login(String email,String password){
        JSONResult result = new JSONResult();
        User user = userService.login(email, password);
        //将对象共享到session中
        UserContext.setCurrentUser(user);
        result.setObj(user);
        return result;
    }

    //问题:登录成功后,静态资源无法获取session的值,不经过controller,直接通过一个链接访问了
    /*解决方案:
    *1.在JsonResult中添加一个data属性,将获取的登录对象转化为json对象传递到动态页面上
    *2.当json对象传递到了login界面的额时候,利用自带了sessionStorage存储数据
    *3.在login界面设置后,缓存中拥有了登录的对象,直接在侧边栏中获取即可
    * */



    //注销操作
    @DeleteMapping
    @ResponseBody
    public Object logout(HttpSession session){
        JSONResult result = new JSONResult();
        //销毁作用域中的session的值
        session.invalidate();
        return result;
    }

}
